As the number of personal computers, workstations, and other intelligent devices continues to grow, the amount of data stored and accessed by these devices also continues to grow. Users generally prefer to keep files at their fingertips, even those that are rarely used, but are nevertheless valuable. Accordingly, distributed file systems are typically used for storing and retrieving data from remote locations. Distributed systems typically provide a computer service (e.g., a computer file service) through a plurality of processes executed on a plurality of nodes in a computer network.
Multicasting is a conventional communication technique for transmitting a single message to multiple devices. In an article entitled “The Design of a Multicast-Based Distributed File System”, Gronvall et al. discloses a distributed file system that uses multicasting to limit the need to know the precise location of data. A node in a network multicasts a request for data to all nodes simultaneously (e.g., a request is transmitted on a multicast channel to all nodes that are connected to the channel). Any node that is storing a replica of the requested data can respond. To implement this system, however, a modification of the client software is required. Accordingly, this system suffers from drawbacks, such as increased cost for creating and testing the modified code and delaying the implementation of the system due to testing.
Karamanolis et al., in an article entitled “Client-Access Protocols for Replicated Services”, also discloses employing multicasting in a distributed system. In fault tolerant distributed file systems, multiple data servers (i.e., mirrors) may store identical data. Therefore, if one data server fails, a mirror may respond to a request for data without the entire system becoming inoperative. However, when mirrors are used in a distributed system, each mirror in the system may respond to a single request. Thus, multiple identical responses may be transmitted to a client making the request. Karamanolis et al. further discloses a distributed system including mirrors, and a synchronization technique, such as described in section 5.2.1, that includes a method for providing a single response to a request when multiple servers in the distributed system are operative to respond to the request. The disclosed synchronization technique may not necessarily require modification to client code. However, both Karamanolis et al. and Gronvall et al. may not distinguish between different types of requests, and both do not disclose efficient techniques for responding to different types of requests.